package smallfrench.moteur.lexer;

import smallfrench.moteur.lexer.err.ErreurLexer;
import smallfrench.moteur.lexer.lexemes.Lexeme;

/**
 * Classe abstraite représentant un automate fini déterministe (DFA).
 * 
 * @author antoine1023
 *
 */
public abstract class Automate {

	/**
	 * Essaye de reconnaitre des lexèmes sur le lecteur.
	 * 
	 * @param lecteur
	 * @param position La position actuelle du lecteur ; pour optimiser
	 * @return Un lexème ou <code>null</code>, si aucun lexème n'a pu être
	 * reconnu. Dans ce dernier cas, la position du lecteur doit être la
	 * même avant et après l'appel de cette fonction
	 * @throws ErreurLexer
	 */
	public abstract Lexeme analyser(LecteurChaine lecteur, Position position)
			throws ErreurLexer;

}
